package it.vecchiContratti;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;

public class Contratto 
{
    private String numero;
    private Data dataInizio;
    private int durata;
    private String importo;
    private String tipo;
    private String azienda;
    private Data dataScadenza;

    public Contratto() 
    {}    
    
    public Contratto( String num, String di, int dur, String imp, String t, 
            String az)
    {
        numero = new String(num);
        dataInizio = parsaData(di);
        durata = dur;
        importo = new String(imp);
        tipo = new String(t);
        azienda = new String(az);
        calcolaDataScadenza();
    }
    
    private Data parsaData(String d)
    {                
        StringTokenizer st = new StringTokenizer(d, "/");
        Integer g = new Integer(st.nextToken());
        Integer m = new Integer(st.nextToken());
        Integer a = new Integer(st.nextToken());
        Data data = new Data(g.intValue(), m.intValue(), a.intValue());
        return data;
    }
    
    public  void calcolaDataScadenza()
    {
        int gi = dataInizio.getGiorno();
        int mi = dataInizio.getMese()-1;
        int ai = dataInizio.getAnno();
        Calendar di = new GregorianCalendar(ai, mi, gi);
        di.add(Calendar.MONTH, durata);
        int gs = di.get(Calendar.DAY_OF_MONTH);
        int ms = di.get(Calendar.MONTH)+1;
        int as = di.get(Calendar.YEAR);
        dataScadenza = new Data(gs, ms, as);                
    }
    
    public void proroga(int p)
    {
        durata = durata+p;
        int gs = dataScadenza.getGiorno();
        int ms = dataScadenza.getMese()-1;
        int as = dataScadenza.getAnno();
        Calendar c = new GregorianCalendar(as, ms, gs);
        c.add(Calendar.MONTH, p);
        int gns = c.get(Calendar.DAY_OF_MONTH);
        int mns = c.get(Calendar.MONTH)+1;
        int ans = c.get(Calendar.YEAR);
        dataScadenza = new Data(gns, mns, ans);
    }    
    
    public void setNumero(String n)
    {
        numero = new String(n);
    }
    
    public void setDataInizio(String d)
    {
        dataInizio = parsaData(d);
    }
    
    public void setDurata(int d)
    {
        durata = d;
    }
    
    public void setImporto(String i)
    {
        importo = new String(i);
    }
    
    public void setTipo(String t)
    {
        tipo = new String(t);    
    }
    
    public void setAzienda(String a)
    {
        azienda = new String(a);
    }    
     
    
    public String getNumero()
    {
        return numero;
    }
    
    public String getDataInizioInStringa()
    {
        int gi = dataInizio.getGiorno();
        int mi = dataInizio.getMese();
        int ai = dataInizio.getAnno();
        return new String(gi+"/"+mi+"/"+ai);        
    }
    
    public int getDurata()
    {
        return durata;
    }
    
    public String getImporto()
    {
        return importo;
    }
    
    public String getTipo()
    {
        return tipo;
    }
    
    public String getAzienda()
    {
        return azienda;
    }
    
    public String getDataScadenzaInStringa()
    {
        int gs = dataScadenza.getGiorno();
        int ms = dataScadenza.getMese();
        int as = dataScadenza.getAnno();
        return new String(gs+"/"+ms+"/"+as);
    }
    
    public Data getDataInizio()
    {
        return dataInizio;
    }
    
    public Data getDataScadenza()
    {
        return dataScadenza;
    }
    
    public void stampaContratto()
    {
        System.out.println("NUMERO "+numero+" "+
                "DATA INIZIO "+dataInizio.getGiorno()+"/"+dataInizio.getMese()+"/"+dataInizio.getAnno()+
                "DURATA "+durata+
                "IMPORTO "+importo+
                "TIPO "+tipo+
                "AZIENDA "+azienda+
                "DATA SCADENZA "+dataScadenza.getGiorno()+"/"+dataScadenza.getMese()+"/"+dataScadenza.getAnno());
    }
}

